package main

import (
	"encoding/json"
	"fmt"
	"os"

	"mcp-server/internal/docprocessor"
	"mcp-server/internal/types"
)

func main() {
	fmt.Println("=== 中文文本分片模块测试 ===")

	// 创建处理器
	processor := docprocessor.NewDocumentProcessor()

	// 测试文件路径
	testFile := "test_sample.md"

	// 检查文件是否存在
	if _, err := os.Stat(testFile); os.IsNotExist(err) {
		fmt.Printf("测试文件不存在: %s\n", testFile)
		return
	}

	fmt.Printf("处理文件: %s\n", testFile)

	// 处理文件
	result, err := processor.ProcessFile(testFile)
	if err != nil {
		fmt.Printf("处理失败: %v\n", err)
		return
	}

	// 显示结果
	fmt.Printf("处理成功!\n")
	fmt.Printf("文件: %s\n", result.Document.FileName)
	fmt.Printf("大小: %d bytes\n", result.Document.FileSize)
	fmt.Printf("行数: %d\n", result.Document.TotalLines)
	fmt.Printf("分片数: %d\n", result.Document.TotalChunks)
	fmt.Printf("处理时间: %d ms\n", result.Document.ProcessTime)

	fmt.Println("\n=== 分片详情 ===")
	for i, chunk := range result.Chunks {
		fmt.Printf("分片 %d:\n", i+1)
		fmt.Printf("  ID: %s\n", chunk.ID)
		fmt.Printf("  行号: %d-%d\n", chunk.StartLine, chunk.EndLine)
		fmt.Printf("  大小: %d字符\n", len([]rune(chunk.Content)))
		if chunk.SemanticTag != "" {
			fmt.Printf("  语义标签: %s\n", chunk.SemanticTag)
		}

		// 显示内容预览
		preview := chunk.Content
		if len([]rune(preview)) > 100 {
			preview = string([]rune(preview)[:100]) + "..."
		}
		fmt.Printf("  内容: %s\n", preview)
		fmt.Println()
	}

	// 保存结果到JSON文件
	if err := os.MkdirAll("results", 0755); err != nil {
		fmt.Printf("创建results目录失败: %v\n", err)
		return
	}

	jsonData, err := json.MarshalIndent([]*types.SplitResult{result}, "", "  ")
	if err != nil {
		fmt.Printf("序列化JSON失败: %v\n", err)
		return
	}

	outputFile := "results/manual_test_result.json"
	if err := os.WriteFile(outputFile, jsonData, 0644); err != nil {
		fmt.Printf("保存文件失败: %v\n", err)
		return
	}

	fmt.Printf("结果已保存到: %s\n", outputFile)
	fmt.Println("=== 测试完成 ===")
}
